home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #047 (1990)(Amiga User Group Deutschland e.V.)[v Disaster Master 2].zip / Franz PD Disk #047 (1990)(Amiga User Group Deutschland e.V.)[v Disaster Master 2].adf / A68K_Beispiele / Disasm1.asm < prev    next >
Assembly Source File  |  1989-07-02  |  48KB  |  1,935 lines

  1. ***************************************
  2. * Disassemble one line module         *
  3. * Version 1.2 14.5.89                 *
  4. *                                     *
  5. * written by E. Lenz                  *
  6. *            Johann-Fichte-Strasse 11 *
  7. *            8 Munich 40              *
  8. *            Germany                  *
  9. *                                     *
  10. ***************************************
  11.  
  12.      XDEF Disasm1
  13.  
  14. ;Communication structure
  15.  
  16. SBegin   equ 0
  17. SRelAddr equ 4
  18. SMicro   equ 8
  19. SOpCode  equ $a
  20. SType1   equ $c
  21. SLen1    equ $e
  22. SAddr1   equ $10
  23. SType2   equ $14
  24. SLen2    equ $16
  25. SAddr2   equ $18
  26. STotal   equ $1c
  27. SBuffer  equ $1e
  28.  
  29. *** INPUT ***
  30. ; a0 pointer to communication structure
  31.  
  32.  
  33. *** ON STACK *****
  34. ;
  35. ; word 0
  36. ; 1st address                  (long) [d7]
  37. ; length of 1st address        (word) [d6]
  38. ; type of 1st address          (word) [d5]
  39. ; 2nd address                  (long) [d4]
  40. ; length of 2nd address        (word) [d3]
  41. ; type for 2nd address         (word) [d2]
  42. ; 0=no address
  43. ; qualifier                    (word) [d0]
  44. ; 0=.b 1=no qualifier  2=.w  4=.l 6=.s
  45. ; pointer to opcode text       (long) [a2]
  46. ; number of words to write - 1 (word) [d1]
  47.  
  48. ; a3 displacement
  49. ; a5 second displacement for move <ea>,<ea>
  50.  
  51. **** ADDRESS TYPE ****
  52. ;
  53. ; 0 = no address
  54. ; 1 = Dn
  55. ; 2 = An
  56. ; 3 = (An)
  57. ; 4 = (An)+
  58. ; 5 = -(An)
  59. ; 6 = d(An)
  60. ; 7 = d(An,Rn)
  61. ; 8 = $xxxx
  62. ; 9 = $xxxx xxxx
  63. ; 10 = d(PC)
  64. ; 11 = d(PC,Rn)
  65. ; 12 = #$xxxx
  66. ; 13 = ccr
  67. ; 14 = sr
  68. ; 15 = sfc
  69. ; 16 = dfc
  70. ; 17 = usp
  71. ; 18 = vbr
  72. ; 19 movem stuff
  73.  
  74. Disasm1  movem.l d0-d7/a3-a6,-(a7)
  75.          bclr    #0,SRelAddr+3(a0)  make sure everything's even
  76.          bclr    #0,SBegin+3(a0)
  77.          suba.l  a5,a5          clear second displacement
  78.          movea.l SBegin(a0),a1  begin address
  79.          move.l  (a1),d7        first long word
  80.          move.w  (a1)+,d3       first word
  81.  
  82.          move.w  d3,d0
  83.          lsr.w   #8,d0          Get first byte
  84.          lsr.w   #2,d0          First half byte
  85.          andi.w  #$3c,d0
  86.          lea     Group(pc),a2
  87.          move.l  0(a2,d0.w),a2
  88.          jmp     (a2)           jump to it's group
  89.  
  90. cmpchk1  moveq   #0,d0
  91. cmpchk   cmpi.w  #2,SMicro(a0)
  92.          blt.s   what
  93.          movem.l d0/d7,-(a7)
  94.          bsr     DecAddr1
  95.          movem.l (a7)+,d0/d4
  96.          cmpi.w  #3,d5         no Dn,An
  97.          blt.s   what
  98.          beq.s   wok
  99.          cmpi.w  #6,d5         no (An)+,-(An)
  100.          blt.s   what
  101.          cmpi.w  #12,d5        no #...
  102.          beq.s   what
  103. wok      moveq   #1,d1         two words
  104.          moveq   #1,d2         assume Dn
  105.          btst    #15,d4
  106.          beq.s   issDn
  107.          moveq   #2,d2         twas An
  108. issDn    lea     TCmp2(pc),a2  assume cmp2
  109.          btst    #11,d4
  110.          beq.s   iscmp2
  111.          lea     TChk2(pc),a2  twas chk2
  112. iscmp2   move.w  d4,d3
  113.          andi.w  #$7ff,d3
  114.          bne.s   what
  115.          ror.w   #8,d4
  116.          ror.w   #4,d4
  117.          andi.w  #7,d4
  118.          bra     Rewrite
  119. cmpchk2  moveq   #2,d0
  120.          bra.s   cmpchk
  121. cmpchk3  moveq   #4,d0
  122.          bra.s   cmpchk
  123. what     bra     Undef
  124.  
  125. Group0   btst    #8,d3
  126.          bne     GBtst
  127.  
  128.          lea     TOri(pc),a2        'ori' opcode
  129.          cmpi.w  #$3c,d3
  130.          beq     Goccr
  131.  
  132.          cmpi.w  #$7c,d3
  133.          beq     Gosr
  134.  
  135.          cmpi.w  #$bf,d3
  136.          bls.s   Ggimm
  137.  
  138.          cmpi.w  #$ff,d3
  139.          bls     cmpchk1
  140.  
  141.          lea     TAndi(pc),a2       'andi' opcode
  142.          cmpi.w  #$23c,d3
  143.          beq     Goccr
  144.  
  145.          cmpi.w  #$27c,d3
  146.          beq     Gosr
  147.  
  148.          cmpi.w  #$2bf,d3
  149.          bls.s   Ggimm
  150.  
  151.          cmpi.w  #$2ff,d3
  152.          bls.s   cmpchk2
  153.  
  154.          lea     TSubi(pc),a2       'subi' opcode
  155.          cmpi.w  #$4bf,d3
  156.          bls.s   Ggimm
  157.  
  158.          cmpi.w  #$4ff,d3
  159.          bls.s   cmpchk3
  160.  
  161.          lea     TAddi(pc),a2       'addi' opcode
  162.          cmpi.w  #$6bf,d3
  163. Ggimm    bls     Gimm
  164.  
  165.          cmpi.w  #$6ff,d3
  166.          bgt.s   noMod
  167.          cmpi.w  #2,SMicro(a0)
  168.          blt.s   gnoi
  169.          lea     TRtm(pc),a2        'rtm' opcode
  170.          moveq   #1,d0          no qualifier
  171.          cmpi.w  #$6cf,d3
  172.          bgt.s   noRtm
  173.          moveq   #0,d1          one word
  174.          moveq   #0,d2          no 2nd address
  175.          moveq   #1,d5          assume Dn
  176.          move.w  d3,d7
  177.          btst    #3,d7
  178.          beq.s   wasDn
  179.          moveq   #2,d5
  180. wasDn    and.w   #7,d7
  181.          bra     Rewr1
  182. noRtm    lea     TCallm(pc),a2  'callm' opcode
  183.          bsr     DecAddr2
  184.          cmpi.w  #4,d3          no (An)+
  185.          beq.s   gnoi
  186.          cmpi.w  #5,d3          no -(An)
  187.          beq.s   gnoi
  188.          cmpi.w  #12,d3         no #...
  189.          beq.s   gnoi
  190.          moveq   #1,d1          two words
  191.          moveq   #12,d5         type immediate
  192.          moveq   #1,d6          byte
  193.          bra.s   Ggrew
  194. gnoi     bra     noi
  195.  
  196. noMod    cmpi.w  #$8ff,d3       bit operands with
  197.          blt     GBtst          bit number immediate
  198.  
  199.          lea     TEori(pc),a2       'eori' opcode
  200.          cmpi.w  #$a3c,d3
  201.          bne.s   Eorsr
  202. Goccr    move.w  d7,d3
  203.          andi.w  #$ff00,d3
  204.          bne.s   gnoi
  205.          moveq   #1,d6          1st length byte
  206.          moveq   #13,d2         2nd address ',ccr'
  207.          bra.s   Gsr
  208.  
  209. Eorsr    cmpi.w  #$a7c,d3
  210.          bne.s   GEori
  211. Gosr     moveq   #2,d6          Word
  212.          moveq   #14,d2         ',sr'
  213. Gsr      moveq   #1,d0          no qualifier
  214.          moveq   #1,d1          write two words
  215.          moveq   #12,d5         type immediate
  216.          bra.s   Ggrew
  217.  
  218. GEori    lea     TEori(pc),a2       'eori' opcode
  219.          cmpi.w  #$aff,d3
  220.          bls.s   Gimm
  221.  
  222.          cmpi.w  #$cff,d3
  223.          bgt.s   GMoves
  224.          lea     TCmpi(pc),a2       'cmpi' opcode
  225. Gimm     bsr     Imdt
  226.          cmpi.w  #2,d2
  227.          beq.s   Gof
  228.          cmpi.w  #9,d2
  229.          bgt.s   Gof
  230. Ggrew    bra.s   GRew
  231.  
  232. GMoves   tst.l   SMicro(a0)
  233.          bne.s   noi
  234.          lea     TMoves(pc),a2      moves opcode
  235.          move.w  d7,d0
  236.          andi.w  #$7ff,d0
  237.          bne.s   noi
  238.          move.w  d7,d6
  239.          cmpi.w  #2,d5
  240.          blt.s   Gof         no Dn or An as <ea>
  241.          moveq   #1,d5       assume Dn
  242.          btst    #15,d6
  243.          beq.s   wasd
  244.          moveq   #2,d5
  245. wasd     lsr.w   #8,d7
  246.          lsr.w   #4,d7
  247.          andi.w  #7,d7
  248.          moveq   #1,d1      two words
  249.          bsr     Size
  250.          bsr     DecAddr2
  251.          bchg    #11,d6
  252.          btst    #11,d6
  253.          bra.s   trys
  254. Gof      bra.s   noi
  255.  
  256. GBtst    move.w  d3,d0
  257.          andi.w  #$38,d0
  258.          cmpi.w  #8,d0
  259.          beq.s   GMovep
  260.          move.w  d3,d0
  261.          andi.w  #$c0,d0
  262.          bne.s   GBchg
  263.          lea     TBtst(pc),a2
  264.          bra.s   GBit
  265. GBchg    cmpi.w  #$40,d0
  266.          bne.s   GBclr
  267.          lea     TBchg(pc),a2
  268.          bra.s   GBit
  269. GBclr    cmpi.w  #$80,d0
  270.          bne.s   GBset
  271.          lea     TBclr(pc),a2
  272.          bra.s   GBit
  273. GBset    lea     TBset(pc),a2
  274. GBit     bsr     Bit
  275. GRew     bra     Rewrite
  276. noi      bra     Undef
  277.  
  278. GMovep   lea     TMovep(pc),a2       movep
  279.          moveq   #1,d1     two words
  280.          moveq   #2,d0     assume .w
  281.          btst    #6,d3
  282.          beq.s   solong
  283.          moveq   #4,d0
  284. solong   moveq   #6,d5      d(An)
  285.          move.w  d7,a3
  286.          move.w  d3,d7
  287.          andi.w  #7,d7
  288.          moveq   #1,d2      data reg
  289.          move.w  d3,d4
  290.          lsr.w   #8,d4
  291.          lsr.w   #1,d4
  292.          andi.w  #7,d4
  293.          btst    #7,d3
  294. trys     beq.s   GRew
  295.          bsr     Swapreg
  296.          bra.s   GRew
  297.  
  298. Group1   moveq   #0,d0      byte
  299.          bra.s   gotqual
  300. Group2   moveq   #4,d0      long
  301.          bra.s   gotqual
  302. Group3   moveq   #2,d0      word
  303. gotqual  move.w  d3,d1
  304.          andi.w  #$1c0,d1   now get destination mode
  305.          cmpi.w  #$40,d1
  306.          beq.s   GMovea     movea command
  307.          lea     TMove(pc),a2
  308.          moveq   #0,d1
  309.          suba.l  a3,a3
  310.          move.w  d3,-(a7)
  311.          bsr     DecAddr2
  312.          bsr     Swapreg
  313.          move.w  (a7)+,d3
  314.          cmpa.l  #0,a3
  315.          beq.s   na3
  316.          movea.l a3,a5
  317.          suba.l  a3,a3
  318. na3      lsr.w   #3,d3
  319.          andi.w  #$1f8,d3
  320.          move.w  d3,d4
  321.          lsr.w   #6,d4
  322.          andi.w  #7,d4
  323.          or.w    d4,d3
  324.          bsr     DecAddr2
  325.          exg     a3,a5
  326.          cmpi.w  #$10,d2   check destination address
  327.          bge.s   rub1
  328.          bra     GRew
  329.  
  330. GMovea   lea     TMovea(pc),a2
  331.          tst.w   d0       no byte qualifier
  332.          beq.s   rub1
  333.          bsr     Dnea
  334.          moveq   #2,d2
  335.          bra     GRew
  336.  
  337.  
  338. Group4   btst    #8,d3
  339.          bne     GLea
  340.  
  341.          cmpi.w  #$40ff,d3
  342.          bgt.s   GMoveccr
  343.          cmpi.w  #$40c0,d3
  344.          blt.s   GNegx       move from status register
  345.          moveq   #14,d5      sr,
  346.          bra.s   Wmove
  347.  
  348. GNegx    lea     TNegx(pc),a2    'negx' opcode
  349. GNeg     move.w  d3,d0
  350.          andi.w  #$c0,d0     get size bits 7,6
  351.          lsr.w   #5,d0
  352.          move.w  d0,-(a7)
  353. Gbcd     moveq   #0,d1
  354.          bsr     DecAddr1
  355.          move.w  (a7)+,d0
  356.          bra     Rewr1
  357.  
  358. GMoveccr cmpi.w  #$4200,d3
  359.          blt.s   rub1
  360.          cmpi.w  #$42ff,d3
  361.          bgt.s   GMovtccr
  362.          lea     TClr(pc),a2
  363.          cmpi.w  #$42c0,d3
  364.          blt.s   GNeg
  365.          tst.w   SMicro(a0)  move from ccr
  366.          beq.s   rub1
  367.          moveq   #13,d5      ccr,
  368. Wmove    moveq   #1,d0       no qualifier
  369.          moveq   #0,d1       one word
  370.          lea     TMove(pc),a2    'move' opcode
  371.          bsr     DecAddr2
  372.          bra.s   Rew1
  373. rub1     bra     Undef
  374.  
  375. GMovtccr cmpi.w  #$4400,d3
  376.          blt.s   rub1
  377.          cmpi.w  #$44ff,d3
  378.          bgt.s   GMovtsr
  379.          lea     TNeg(pc),a2
  380.          cmpi.w  #$44c0,d3
  381.          blt.s   GNeg
  382.          moveq   #0,d1       move to ccr
  383.          bsr     DecAddr1
  384.          moveq   #13,d2
  385.          bra.s   Movreg
  386.  
  387. GMovtsr  cmpi.w  #$4600,d3
  388.          blt.s   rub1
  389.          cmpi.w  #$46ff,d3
  390.          bgt.s   GNbcd
  391.          lea     TNot(pc),a2
  392.          cmpi.w  #$46c0,d3
  393.          blt.s   GNeg
  394.          moveq   #0,d1       one word
  395.          bsr     DecAddr1
  396.          moveq   #14,d2
  397. Movreg   moveq   #1,d0            no qualifier
  398.          lea     TMove(pc),a2     move to ccr
  399. Rew1     bra     Rewrite
  400.  
  401. GNbcd    cmpi.w  #$4800,d3
  402.          blt.s   rub1
  403.          cmpi.w  #$483f,d3
  404.          bgt.s   GSwap
  405.          lea     TNbcd(pc),a2
  406. Gtobcd   moveq   #1,d0
  407.          move.w  d0,-(a7)
  408.          bra     Gbcd
  409.  
  410. GSwap    cmpi.w  #$4847,d3
  411.          bgt.s   GBkpt
  412.          lea     TSwap(pc),a2
  413.          bra.s   Gtobcd
  414.  
  415. GBkpt    cmpi.w  #$484f,d3
  416.          bgt.s   GPea
  417.          cmpi.w  #2,SMicro(a0)      68020+
  418.          blt.s   rub1
  419.          lea     TBkpt(pc),a2       bkpt #n
  420.          bra     VecWrt
  421.  
  422. GPea     cmpi.w  #$487f,d3
  423.          bgt.s   GExt
  424.          lea     TPea(pc),a2        'pea' opcode
  425.          moveq   #1,d0          no qualifier
  426.          bra.s   Godec
  427.  
  428. GExt     cmpi.w  #$49c7,d3
  429.          bgt.s   GMovm
  430.          move.w  d3,d0
  431.          andi.w  #$38,d0    Bits 5 4 3 must be 000
  432.          bne.s   GMovm
  433.          move.w  d3,d0
  434.          andi.w  #$1c0,d0   get qualifier
  435.          lsr.w   #6,d0
  436.          cmpi.w  #2,d0       .w
  437.          beq.s   Qok
  438.          cmpi.w  #3,d0       .l
  439.          bne.s   Pot
  440.          moveq   #4,d0
  441. Qok      lea     TExtn(pc),a2
  442. Godec    bra     dec1
  443. Pot      cmpi.w  #7,d0
  444.          bne.s   notis
  445.          cmpi.w  #2,SMicro(a0)
  446.          blt.s   notis
  447.          moveq   #4,d0
  448.          lea     TExtb(pc),a2
  449.          bra.s   Godec
  450.  
  451. GMovm    cmpi.w  #$48ff,d3      movem reg_list,<ea>
  452.          bgt.s   GIllegal
  453.          lea     TMovem(pc),a2      'movem' op code
  454.          moveq   #2,d0
  455.          moveq   #1,d1
  456.          btst    #6,d3
  457.          beq.s   mwd
  458.          moveq   #4,d0          qualifier
  459. mwd      move.w  (a1)+,d7
  460.          moveq   #19,d5         movem stuff type
  461.          bsr     DecAddr2
  462.          cmpi.w  #3,d2          no Dn,An
  463.          blt.s   notis
  464.          cmpi.w  #4,d2          no (An)+
  465.          beq.s   notis
  466.          cmpi.w  #5,d2          is it -(An)?
  467.          bne.s   trypct
  468.          movem.l d3-d5,-(a7)
  469.          moveq   #15,d5
  470.          moveq   #0,d4          reverse the register list
  471.          moveq   #0,d3
  472. mwd1     btst    d5,d7
  473.          beq.s   noset
  474.          bset    d4,d3
  475. noset    addq.w  #1,d4
  476.          subq.w  #1,d5
  477.          bpl.s   mwd1
  478.          move.w  d3,d7
  479.          movem.l (a7)+,d3-d5
  480. trypct   cmpi.w  #9,d2          no d(PC) etc
  481.          bgt.s   notis
  482.          tst.w   d7
  483.          bne.s   Rew2          Reg mask may not be zero
  484. notis    bra     Undef
  485.  
  486. GIllegal cmpi.w  #$4a00,d3
  487.          blt.s   notis
  488.          cmpi.w  #$4afc,d3
  489.          bne.s   GTst
  490.          lea     TIllegal(pc),a2
  491.          bra     OneByte
  492.  
  493. GTst     cmpi.w  #$4abf,d3
  494.          bgt.s   GTas
  495.          move.w  d3,d0
  496.          andi.w  #$c0,d0
  497.          lsr.w   #5,d0
  498.          lea     TTst(pc),a2
  499. dec1     bsr     DecAddr1
  500.          bra.s   Rew12
  501.  
  502. GTas     cmpi.w  #$4aff,d3
  503.          bgt.s   GMovem
  504.          moveq   #1,d0       no qualifier
  505.          lea     TTas(pc),a2
  506.          bra.s   dec1
  507.  
  508. GMovem   cmpi.w  #$4c80,d3     movem <ea>,reg_list
  509.          blt.s   notis
  510.          cmpi.w  #$4cff,d3
  511.          bgt.s   GTrap
  512.          lea     TMovem(pc),a2
  513.          moveq   #2,d0
  514.          btst    #6,d3
  515.          beq.s   mwwd
  516.          moveq   #4,d0
  517. mwwd     move.w  (a1)+,-(a7)
  518.          bsr     DecAddr1
  519.          addq.w  #1,d1
  520.          moveq   #19,d2      movem stuff type
  521.          move.w  (a7)+,d4
  522.          cmpi.w  #3,d5       no Dn,An
  523.          blt.s   notok
  524.          cmpi.w  #5,d5       no -(An)
  525.          beq.s   notok
  526.          cmpi.w  #11,d5
  527.          bgt.s   notok
  528.          tst.w   d4
  529.          beq.s   notok       Reg mask may not be zero
  530. Rew2     bra     Rewrite
  531. notok    bra     Undef
  532.  
  533. GTrap    cmpi.w  #$4e40,d3
  534.          blt.s   notok
  535.          cmpi.w  #$4e4f,d3
  536.          bgt.s   GLink
  537.          lea     TTrap(pc),a2
  538. VecWrt   bsr     Vector
  539. Rew12    bra     Rewr1
  540.  
  541. GLink    cmpi.w  #$4e58,d3
  542.          bgt.s   GUnlk
  543.          moveq   #1,d0
  544.          moveq   #1,d1
  545.          move.w  d7,d4
  546.          move.w  d3,d7
  547.          andi.w  #7,d7        register
  548.          moveq   #1,d6
  549.          moveq   #2,d5        An
  550.          moveq   #12,d2       immediate data
  551.          moveq   #3,d3        signed word
  552.          lea     TLink(pc),a2
  553.          bra.s   Rew2
  554.  
  555. GUnlk    cmpi.w  #$4e5f,d3
  556.          bgt.s   GMovesp
  557.          andi.w  #$ffef,d3
  558.          moveq   #1,d0
  559.          lea     TUnlk(pc),a2
  560.          bra     dec1
  561.  
  562. GMovesp  cmpi.w  #$4e6f,d3
  563.          bgt.s   GReset
  564.          lea     TMove(pc),a2
  565.          moveq   #1,d0
  566.          moveq   #0,d1
  567.          andi.w  #$f,d3
  568.          cmpi.w  #7,d3
  569.          bgt.s   Fromusp
  570.          moveq   #2,d5
  571.          moveq   #1,d6
  572.          move.w  d3,d7
  573.          moveq   #17,d2
  574.          bra.s   Rew2
  575. Fromusp  move.w  d3,d4
  576.          andi.w  #7,d4
  577.          moveq   #2,d2
  578.          moveq   #1,d3
  579.          moveq   #17,d5
  580.          bra     Rewrite
  581.  
  582.  
  583. GReset   lea     TReset(pc),a2
  584.          cmpi.w  #$4e70,d3
  585.          beq.s   OneByte
  586.  
  587.          lea     TNop(pc),a2
  588.          cmpi.w  #$4e71,d3
  589.          beq.s   OneByte
  590.  
  591.          cmpi.w  #$4e72,d3    'stop' operand
  592.          bne.s   SRte
  593.          lea     TStop(pc),a2
  594. Xstop    moveq   #1,d0        no qualifier
  595.          moveq   #1,d1        2 words
  596.          moveq   #0,d2        no second address
  597.          moveq   #12,d5       immediate address
  598.          moveq   #2,d6        word operand
  599.          move.w  (a1)+,d7
  600.          bra     Rew13
  601.  
  602. SRte     lea     TRte(pc),a2
  603.          cmpi.w  #$4e73,d3
  604.          beq.s   OneByte
  605.  
  606.          lea     TRtd(pc),a2
  607.          cmpi.w  #$4e74,d3
  608.          bne.s   SRts
  609.          tst.w   SMicro(a0)   only 68010+
  610.          bne.s   Xstop
  611.          bra.s   Jmpf
  612.  
  613. SRts     lea     TRts(pc),a2
  614.          cmpi.w  #$4e75,d3
  615.          beq.s   OneByte
  616.  
  617.          lea     TTrapv(pc),a2
  618.          cmpi.w  #$4e76,d3
  619.          beq.s   OneByte
  620.  
  621.          cmpi.w  #$4e77,d3
  622.          bne.s   GMovec
  623.          lea     TRtr(pc),a2
  624. OneByte  moveq   #0,d5          no operand
  625.          moveq   #1,d0          no qualifier
  626.          moveq   #0,d1          write one word
  627.          bra     Rewr2
  628. Jmpf     bra     Undef
  629.  
  630. GMovec   cmpi.w  #$4e7a,d3
  631.          beq.s   ismovec
  632.          cmpi.w  #$4e7b,d3
  633.          bne.s   GJsr
  634. ismovec  tst.w   SMicro(a0)
  635.          beq.s   Jmpf
  636.          move.w  d7,d0
  637.          andi.w  #$7fe,d0
  638.          bne.s   Jmpf
  639.          lea     TMovec(pc),a2
  640.          moveq   #1,d0          no qualifier
  641.          moveq   #1,d1          two words
  642.          moveq   #15,d2         assume sfc
  643.          btst    #0,d7
  644.          beq.s   noinc
  645.          addq.w  #1,d2
  646. noinc    btst    #11,d7
  647.          beq.s   nocni
  648.          addq.w  #2,d2
  649. nocni    moveq   #1,d5          2nd address type An or Dn
  650.          btst    #15,d7
  651.          beq.s   noicn
  652.          addq.w  #1,d5
  653. noicn    lsr.w   #8,d7
  654.          lsr.w   #4,d7
  655.          andi.w  #7,d7
  656.          btst    #0,d3
  657.          beq.s   nomrel
  658.          bsr     Swapreg
  659.          bra.s   nomrel
  660.  
  661. GJsr     cmpi.w  #$4e80,d3
  662. Jjmpf    blt.s   Jmpf
  663.          cmpi.w  #$4ebf,d3
  664.          bgt.s   GJmp
  665.          lea     TJsr(pc),a2
  666.          moveq   #1,d0
  667.          bsr     DecAddr1
  668. Rew13    bra     Rewr1
  669.  
  670. GJmp     cmpi.w  #$4eff,d3
  671.          bgt.s   Jmpf
  672.          lea     TJmp(pc),a2
  673.          bra     XScc
  674.  
  675. GLea     move.w  d3,d0
  676.          andi.w  #$fff8,d0
  677.          cmpi.w  #$49c0,d0
  678.          beq     GExt
  679.          cmpi.w  #$4180,d3
  680.          blt.s   Jjmpf
  681.          btst    #6,d3
  682.          beq.s   GChk
  683.          lea     TLea(pc),a2
  684.          moveq   #1,d0     no qualifier
  685.          bsr     Dnea
  686.          bsr     Check2
  687.          moveq   #2,d2     lea ...,An
  688.          cmpi.w  #10,d5    is it d(pc)?
  689.          bne.s   nomrel
  690.          moveq   #4,d6            write long address
  691.          move.w  a3,d7
  692.          ext.l   d7
  693.          add.l   SRelAddr(a0),d7  get relative address
  694.          addq.l  #2,d7
  695. nomrel   bra     Rewrite
  696.  
  697. GChk     move.w  d3,-(a7)
  698.          bsr     DecAddr1
  699.          move.w  (a7)+,d4
  700.          andi.w  #$e00,d4
  701.          lsr.w   #8,d4
  702.          lsr.w   #1,d4
  703.          moveq   #1,d2
  704.          moveq   #2,d0
  705.          lea     TChk(pc),a2
  706.          bra.s   nomrel
  707.  
  708. Group5   move.w  d3,d0
  709.          andi.w  #$c0,d0
  710.          cmpi.w  #$c0,d0
  711.          beq.s   GDbcc
  712.          lea     TSubq(pc),a2
  713.          btst    #8,d3
  714.          bne.s   GSubq
  715.          lea     TAddq(pc),a2    addq
  716. GSubq    move.w  d3,d7       subq
  717.          andi.w  #$e00,d7
  718.          lsr.w   #8,d7
  719.          lsr.w   #1,d7
  720.          bne.s   no8
  721.          moveq   #8,d7
  722. no8      moveq   #1,d6
  723.          moveq   #12,d5
  724.          lsr.w   #5,d0
  725.          moveq   #0,d1
  726.          bsr     DecAddr2
  727.          bra.s   nomrel
  728.  
  729. GDbcc    move.w  d3,d0
  730.          andi.w  #$38,d0
  731.          cmpi.w  #8,d0
  732.          bne.s   GScc
  733.          move.w  d3,d0       dbcc
  734.          lea     Branch(pc),a2
  735.          andi.w  #$f00,d0
  736.          lsr.w   #8,d0
  737.          mulu    #5,d0
  738.          cmpi.w  #5,d0
  739.          bgt.s   Readd
  740.          subq.l  #5,d0
  741. Readd    adda.l  d0,a2
  742.          moveq   #1,d1   no of words = 2
  743.          moveq   #1,d0   no qualifier
  744.          btst    #0,d7   displacement must be even
  745.          bne.s   fff
  746.          move.l  SRelAddr(a0),d4
  747.          ext.l   d7
  748.          add.l   d7,d4
  749.          addq.l  #2,d4
  750.          move.w  d3,d7
  751.          andi.w  #7,d7
  752.          moveq   #1,d5
  753.          moveq   #8,d2
  754.          moveq   #4,d3
  755.          bra     Rewrite
  756.  
  757. GScc     cmpi.w  #$38,d0
  758.          beq.s   fff
  759.          lea     Setcc(pc),a2   scc
  760.          moveq   #0,d0
  761.          move.w  d3,d0
  762.          andi.w  #$f00,d0
  763.          lsr.w   #6,d0
  764.          adda.l  d0,a2
  765. XScc     moveq   #1,d0
  766.          bsr     DecAddr1
  767.          cmpi.w  #8,d5
  768.          beq.s   eadr
  769.          cmpi.w  #9,d5
  770.          bne.s   neadr
  771. eadr     btst    #0,d7      Address must be even
  772.          beq.s   neadr
  773. fff      bra     Undef
  774.  
  775.  
  776. Group6   moveq   #0,d0
  777.          move.w  d3,d0
  778.          lea     Branch(pc),a2
  779.          andi.w  #$f00,d0
  780.          lsr.w   #8,d0
  781.          mulu    #5,d0
  782.          addq.l  #1,d0
  783.          add.l   d0,a2
  784.          moveq   #0,d1   assume no of word = 1
  785.          moveq   #1,d0   assume no qualifier
  786.          moveq   #8,d5
  787.          moveq   #4,d6
  788.          move.l  d7,d4     displacement
  789.          move.l  SRelAddr(a0),d7
  790.          addq.l  #2,d7
  791.          moveq   #0,d2
  792.          tst.b   d3      8 bit displ 0 then 16 bit displ
  793.          beq.s   Trywrd
  794.          cmpi.b  #$ff,d3 8 bit displ ff then 32 bit displ
  795.          beq.s   Trylng
  796.          moveq   #6,d0   qualifier = .s
  797.          andi.l  #$ff,d3
  798.          ext.w   d3
  799.          move.l  d3,d4
  800.          bra.s   bext
  801. Trywrd   moveq   #1,d1
  802.          andi.l  #$ffff,d4
  803. bext     ext.l   d4
  804.          add.l   d4,d7
  805.          bra.s   bccr
  806. Trylng   cmpi.w  #2,SMicro(a0)  long offsets only
  807.          blt.s   fff            for >= 68020
  808.          moveq   #4,d0          qualifier = .l
  809.          moveq   #2,d1          3 words
  810.          move.l  2(a1),d4
  811.          add.l   d4,d7
  812. bccr     btst    #0,d7    branch address even
  813.          bne.s   fff
  814. neadr    bra     Rewr1
  815.  
  816. ; MOVEQ
  817.  
  818. Group7   lea     TMoveq(pc),a2
  819.          btst    #8,d3
  820.          bne.s   fff
  821.          move.w  d3,d7
  822.          andi.w  #$ff,d7
  823.          moveq   #12,d5
  824.          moveq   #0,d6
  825.          move.w  d3,d4
  826.          andi.w  #$e00,d4
  827.          lsr.w   #8,d4
  828.          lsr.w   #1,d4
  829.          moveq   #1,d2
  830.          moveq   #1,d0
  831.          moveq   #0,d1
  832.          bra.s   Rew4
  833.  
  834. ; OR group   8 7 6
  835. ;       OR   0 0 0
  836. ;            0 0 1   if bit 8 is 1 then  5 4 3
  837. ;            0 1 0                       0 0 0
  838. ;            1 0 0                       0 0 1
  839. ;            1 0 1                 are not allowed
  840. ;            1 1 0
  841. ;
  842. ;            8 7 6 5 4
  843. ;            0 1 1     divu
  844. ;            1 0 0 0 0 sbcd
  845. ;            1 0 1 0 0 pack (68020)
  846. ;            1 1 0 0 0 unpk (68020)
  847. ;            1 1 1     divs
  848.  
  849.  
  850. Group8   move.w  d3,d0
  851.          andi.w  #$1c0,d0
  852.          cmpi.w  #$c0,d0    test if 876 = 011
  853.          beq.s   GDivu
  854.          cmpi.w  #$1c0,d0   test if 876 = 111
  855.          beq.s   GDivs
  856.          btst    #8,d3      test if bit 8 set
  857.          beq.s   isor
  858.          move.w  d3,d1
  859.          andi.w  #$30,d1    test if 54 = 00
  860.          beq.s   GSbcd
  861. isor     move.w  d3,-(a7)   or command
  862.          bsr     Size       qualifier
  863.          lea     Tor(pc),a2
  864.          bsr     DecAddr1
  865.          movea.l d4,a4
  866.          move.w  (a7)+,d4
  867.          btst    #8,d4
  868.          beq.s   nextG
  869.          move.w  d4,d7
  870.          move.l  a4,d4
  871.          andi.w  #$e00,d7
  872.          lsr.w   #8,d7
  873.          lsr.w   #1,d7
  874.          move.w  d5,d2
  875.          moveq   #1,d5
  876. Rew4     bra     Rewrite
  877.  
  878. GDivu    lea     TDivu(pc),a2
  879.          bra.s   GDiv
  880. GDivs    lea     TDivs(pc),a2
  881. GDiv     move.w  d3,-(a7)
  882.          bsr     DecAddr1
  883.          moveq   #1,d0
  884.          move.w  (a7)+,d4
  885.          cmpi.w  #12,d5
  886.          bgt.s   nondef
  887. nextG    andi.w  #$e00,d4
  888.          lsr.w   #8,d4
  889.          lsr.w   #1,d4
  890.          moveq   #1,d2
  891.          bra.s   Rew4
  892. nondef   bra     Undef
  893.  
  894. GSbcd    cmpi.w  #$100,d0
  895.          bne.s   GPack
  896.          lea     TSbcd(pc),a2
  897.          moveq   #1,d0
  898.          bra     DnDm
  899. GPack    cmpi.w  #2,SMicro(a0) if micro <2 undefined
  900.          blt.s   nondef
  901.          cmpi.w  #$140,d0
  902.          bne.s   GUnpk
  903.          lea     TPack(pc),a2
  904. GUnpk    lea     TUnpk(pc),a2  >>>>> not implemented >>>>
  905.          bra.s   nondef
  906.  
  907.  
  908. Group9   move.w  d3,d0
  909.          andi.w  #$c0,d0
  910.          cmpi.w  #$c0,d0
  911.          beq.s   GSuba
  912.          btst    #8,d3
  913.          beq.s   GSub
  914.          move.w  d3,d0
  915.          andi.w  #$30,d0
  916.          bne.s   GSub
  917.          lea     TSubx(pc),a2
  918.          moveq   #0,d1
  919.          move.w  d3,d7    subx
  920.          andi.w  #7,d7
  921.          move.w  d3,d4
  922.          andi.w  #$e00,d4
  923.          lsr.w   #8,d4
  924.          lsr.w   #1,d4
  925.          bsr     Size
  926.          moveq   #1,d2
  927.          moveq   #1,d5
  928.          btst    #3,d3
  929.          beq.s   GGR
  930.          moveq   #5,d2
  931.          moveq   #5,d5
  932. GGR      bra     Rewrite
  933.  
  934. GSub     lea     TSub(pc),a2
  935.          bsr     Size
  936.          move.w  d3,-(a7)
  937.          bsr     DecAddr1
  938.          movea.l d4,a4
  939.          move.w  (a7)+,d4
  940.          btst    #8,d4
  941.          bne.s   Slong
  942.          andi.w  #$e00,d4
  943.          lsr.w   #8,d4
  944.          lsr.w   #1,d4
  945.          moveq   #1,d2
  946.          bra.s   GGR
  947. Slong    move.w  d4,d7
  948.          move.l  a4,d4
  949.          andi.w  #$e00,d7
  950.          lsr.w   #8,d7
  951.          lsr.w   #1,d7
  952.          move.w  d5,d2
  953.          moveq   #1,d5
  954.          bra.s   GGR
  955.  
  956. GSuba    lea     TSuba(pc),a2
  957.          moveq   #4,d0
  958.          btst    #8,d3
  959.          bne.s   Sublng
  960.          moveq   #2,d0
  961. Sublng   bsr     Dnea
  962.          moveq   #2,d2
  963.          bra.s   GGR
  964.  
  965.  
  966. Groupb   move.w  d3,d0
  967.          andi.w  #$c0,d0
  968.          cmpi.w  #$c0,d0
  969.          beq.s   GCmpa
  970.          btst    #8,d3
  971.          beq.s   GCmp
  972.          move.w  d3,d0
  973.          andi.w  #$38,d0
  974.          cmpi.w  #8,d0
  975.          beq.s   GCmpm
  976.          lea     TEor(pc),a2
  977.          bsr     Dneasize     eor
  978.          exg     d4,d7
  979.          exg     d5,d2
  980.          bra.s   Rew5
  981.  
  982. GCmpa    lea     TCmpa(pc),a2     cmpa
  983.          bra     XCmp
  984.  
  985. GCmp     lea     TCmp(pc),a2      cmp
  986.          bsr     Dneasize
  987. Rew5     bra     Rewrite
  988.  
  989. GCmpm    lea     TCmpm(pc),a2     cmpm
  990.          ori.w   #$10,d3
  991.          bsr     Dneasize
  992.          moveq   #4,d2
  993.          moveq   #4,d5
  994.          bra.s   nofix
  995.  
  996. Groupc   move.w  d3,d0
  997.          andi.w  #$1c0,d0
  998.          cmpi.w  #$1c0,d0
  999.          beq.s   GMuls
  1000.          cmpi.w  #$c0,d0
  1001.          beq.s   GMulu
  1002.          btst    #8,d3
  1003.          beq.s   GAnd
  1004.          move.w  d3,d0
  1005.          andi.w  #$38,d0
  1006.          beq.s   exgabcd
  1007.          cmpi.w  #8,d0
  1008.          beq.s   exgabcd
  1009. GAnd     lea     TAnd(pc),a2     and
  1010.          bsr     Xdneasize
  1011.          bra.s   nofix
  1012.  
  1013. GMuls    lea     TMuls(pc),a2    muls
  1014.          bra.s   GMul
  1015.  
  1016. GMulu    lea     TMulu(pc),a2    mulu
  1017. GMul     moveq   #1,d0       no qualifier
  1018.          bsr     Dnea
  1019.          bra.s   nofix
  1020.  
  1021.  
  1022. exgabcd  moveq   #1,d0       no qualifier
  1023.          move.w  d3,d1
  1024.          andi.w  #$c0,d1
  1025.          beq.s   GAbcd
  1026.          lea     TExg(pc),a2     exg
  1027.          move.w  d3,a4
  1028.          bsr     Dnea
  1029.          move.w  a4,d3
  1030.          and.w   #$f8,d3
  1031.          cmpi.w  #$48,d3
  1032.          bne.s   nofix
  1033.          moveq   #2,d2
  1034. nofix    bra     Rewrite
  1035.  
  1036. GAbcd    lea     TAbcd(pc),a2     abcd
  1037. DnDm     bsr     Dnea
  1038.          bra.s   fixan
  1039.  
  1040. ; if bits 7,6 = 11 then its adda
  1041. ; if bit 8 is 1 and bits 5,4 = 00 then its addx
  1042. ; else its add
  1043.  
  1044. Groupd   move.w  d3,d0
  1045.          andi.w  #$c0,d0
  1046.          cmpi.w  #$c0,d0      bits 7,6=11
  1047.          beq.s   GAdda
  1048.          btst    #8,d3
  1049.          beq.s   GAdd         if bit 8=0 its add
  1050.          move.w  d3,d0
  1051.          andi.w  #$30,d0      now if bits 5,4<>00 its add
  1052.          bne.s   GAdd
  1053.          lea     TAddx(pc),a2     addx
  1054.          bsr     Dneasize
  1055. fixan    cmpi.w  #2,d5
  1056.          bne.s   nofix
  1057.          moveq   #5,d2        fix addressing mode
  1058.          moveq   #5,d5
  1059.          bra.s   nofix
  1060.  
  1061. GAdda    lea     TAdda(pc),a2     adda
  1062. XCmp     moveq   #2,d0
  1063.          btst    #8,d3
  1064.          beq.s   addword
  1065.          moveq   #4,d0
  1066. addword  bsr     Dnea
  1067.          moveq   #2,d2
  1068.          bra.s   nofix
  1069.  
  1070. GAdd     lea     TAdd(pc),a2     add
  1071.          bsr     Xdneasize
  1072.          bra.s   nofix
  1073.  
  1074. * logical group
  1075.  
  1076. Groupe   lea     TAsr(pc),a2
  1077.          btst    #8,d3
  1078.          beq.s   addrok
  1079.          addq.w  #5,a2
  1080. addrok   move.w  d3,d0
  1081.          andi.w  #$c0,d0
  1082.          cmpi.w  #$c0,d0
  1083.          bne.s   nomem
  1084.          move.w  d3,d0
  1085.          andi.w  #$600,d0
  1086.          lsr.w   #8,d0
  1087.          cmpi.w  #4,d0
  1088.          beq.s   nox
  1089.          addq.l  #1,a2
  1090. nox      mulu    #5,d0
  1091.          adda.w  d0,a2
  1092.          moveq   #1,d0
  1093.          bsr     DecAddr1
  1094.          bra     Rewr1
  1095.  
  1096. nomem    move.w  d3,d0
  1097.          andi.w  #$18,d0
  1098.          lsr.w   #2,d0
  1099.          cmpi.w  #4,d0
  1100.          beq.s   noxx
  1101.          addq.l  #1,a2
  1102. noxx     mulu    #5,d0
  1103.          adda.w  d0,a2
  1104.          move.w  d3,d7
  1105.          andi.w  #$e00,d7
  1106.          lsr.w   #8,d7
  1107.          lsr.w   #1,d7
  1108.          moveq   #1,d5    data register
  1109.          btst    #5,d3
  1110.          bne.s   isdata
  1111.          moveq   #12,d5   immediate
  1112.          moveq   #1,d6
  1113.          tst.w   d7
  1114.          bne.s   isdata
  1115.          moveq   #8,d7
  1116. isdata   bsr     Size
  1117.          bsr     DecAddr2
  1118.          moveq   #0,d1
  1119.          moveq   #1,d2
  1120.          bra.s   Rewrite
  1121.  
  1122.  
  1123. **** UNDEFINED INSTRUCTION *****
  1124.  
  1125. Undef    lea     nodef(pc),a2       non defined opcode
  1126.          moveq   #0,d2
  1127.          movea.l SBegin(a0),a1  1st address
  1128.          move.w  (a1),d7
  1129.          moveq   #0,d2          type of 2nd address
  1130.          moveq   #2,d6          1st length = 2
  1131.          moveq   #8,d5          1st type = absolute
  1132.          moveq   #2,d0          .w qualifier
  1133.          moveq   #0,d1          write one word
  1134.          bra.s   Rewr1
  1135.  
  1136. Rewrite  tst.l   d0
  1137.          bmi.s   Undef
  1138.          cmpi.w  #1,d0
  1139.          ble.s   rere
  1140.          cmpi.w  #8,d2
  1141.          beq.s   dotest
  1142.          cmpi.w  #9,d2
  1143.          bne.s   rere
  1144. dotest   btst    #0,d4          make sure there are no (long) word
  1145.          bne.s   Undef          operations on odd addresses
  1146. rere     move.w  #0,-(a7)       no 3rd address
  1147.          move.l  d4,-(a7)       2nd address
  1148.          move.l  d4,SAddr2(a0)
  1149.          move.w  d3,-(a7)       2nd length
  1150.          move.w  d3,SLen2(a0)
  1151. Rewr1    tst.l   d0
  1152.          bmi.s   Undef
  1153.          move.w  d2,-(a7)       2nd type
  1154.          move.w  d2,SType2(a0)
  1155.          move.l  d7,-(a7)       1st address
  1156.          move.l  d7,SAddr1(a0)
  1157.          move.w  d6,-(a7)       1st length
  1158.          move.w  d6,SLen1(a0)
  1159. Rewr2    move.w  d5,-(a7)       1st type
  1160.          move.w  d5,SType1(a0)
  1161.          move.w  d0,-(a7)       qualifier
  1162.          move.l  a2,-(a7)       opcode text
  1163.          move.w  d1,-(a7)       number of words
  1164.  
  1165. ***** FILL BUFFER ****
  1166.  
  1167. WriteBuf move.l  a0,d1          get buffer start
  1168.          addi.w  #SBuffer,d1
  1169.          movea.l d1,a1
  1170.          move.l  d1,d7
  1171.          addi.w  #42,d7
  1172.  
  1173.          movea.l a1,a2          clear buffer
  1174.          move.l  #$20202020,d0
  1175.          moveq   #20,d1
  1176. clear    move.l  d0,(a2)+
  1177.          dbra    d1,clear
  1178.  
  1179.          move.l  SRelAddr(a0),d1  get relative address
  1180.          moveq   #1,d5
  1181.          bsr     address         write relative address
  1182.          addq.l  #1,a1           blank
  1183.  
  1184.          moveq   #0,d3
  1185.          move.w  (a7)+,d3
  1186.  
  1187.          movea.l SBegin(a0),a2
  1188.  
  1189.          move.l  d3,d1           correction to addresses
  1190.          addq.l  #1,d1
  1191.          lsl.l   #1,d1
  1192.          move.w  d1,STotal(a0)
  1193.          move.l  a2,d0
  1194.          add.l   d1,d0
  1195.          move.l  d0,SBegin(a0)
  1196.          move.l  SRelAddr(a0),d0
  1197.          add.l   d1,d0
  1198.          move.l  d0,SRelAddr(a0)
  1199.  
  1200.  
  1201. *** HEX BYTES ***
  1202.  
  1203. Bloop    move.w  (a2)+,d1        write hex header
  1204.          bsr     words
  1205.          addq.l  #1,a1
  1206.          dbra    d3,Bloop
  1207.          movea.l d7,a1
  1208.  
  1209.  
  1210. *** OPCODE ***
  1211.  
  1212.          movea.l (a7)+,a2
  1213.          move.l  a2,d0
  1214.          subi.l  #nodef,d0
  1215.          move.w  d0,SOpCode(a0)
  1216.          move.w  d0,d6
  1217.          moveq   #10,d0          Write op code
  1218. opcod    move.b  (a2)+,(a1)+
  1219.          dbeq    d0,opcod
  1220.          subq.l  #1,a1
  1221.          move.b  #$20,(a1)
  1222.  
  1223. *** QUALIFIER ***
  1224.  
  1225.  
  1226.          moveq   #0,d4
  1227.          move.w  (a7)+,d4
  1228.          cmpi.b  #1,d4         No qualifier?
  1229.          beq.s   Qualno
  1230.          lea     pointb(pc),a0     Write qualifier
  1231.          adda.w  d4,a0
  1232.          bsr     wrbuf
  1233. Qualno   addq.l  #1,a1
  1234.  
  1235.  
  1236. *** ADDRESS MODE ***
  1237.  
  1238.          moveq   #0,d0
  1239.          move.w  (a7)+,d0      type of address
  1240.          beq     endaddr       no address
  1241.  
  1242. NAddress moveq   #0,d5
  1243.          move.w  (a7)+,d4      get length
  1244.          move.l  (a7)+,d1      get address
  1245.          cmpi.w  #1,d0
  1246.          bne.s   nodreg        Address mode Dn
  1247.          lea     RegText(pc),a0
  1248.          bsr     Dreg
  1249.          bra.s   endad1
  1250.  
  1251. nodreg   cmpi.w  #2,d0
  1252.          bne.s   noareg        Address mode An
  1253.          bsr     Areg
  1254.          bra.s   endad1
  1255.  
  1256. noareg   cmpi.w  #3,d0
  1257.          beq.s   a_reg         Address mode (An)
  1258.  
  1259.          cmpi.w  #4,d0
  1260.          bne.s   no_aa_r       Address mode (An)+
  1261.          bsr     Aareg
  1262.          move.b  #'+',(a1)+
  1263.          bra.s   endad1
  1264.  
  1265. no_aa_r  cmpi.w  #5,d0         Address mode -(An)
  1266.          bne.s   no_ba_r
  1267.          move.b  #'-',(a1)+
  1268.          bra.s   a_reg
  1269.  
  1270. no_ba_r  cmpi.w  #6,d0         Address mode d(An)
  1271.          bne.s   no_da_r
  1272.          move.w  d1,d7
  1273.          move.w  a3,d1
  1274.          bsr     sword
  1275.          move.w  d7,d1
  1276. a_reg    bsr     Aareg
  1277.          bra.s   endad1
  1278.  
  1279. no_da_r  cmpi.w  #7,d0         Address mode d(An,Rn)
  1280.          bne.s   no_dar_r
  1281.          move.w  d1,d7
  1282.          move.w  a3,d1
  1283.          bsr     sbyte         Write byte
  1284.          move.b  #$28,(a1)+    Write "("
  1285.          move.w  d7,d1
  1286.          bsr     Areg          Write register
  1287.          bra     Xpc
  1288.  
  1289. no_dar_r cmpi.w  #12,d0
  1290.          bne.s   tryabs
  1291.          move.b  #'#',(a1)+
  1292.          subq.w  #4,d0         Change mode to absolute
  1293.  
  1294. tryabs   cmpi.w  #9,d0         8,9
  1295.          bgt.s   trydpc
  1296.  
  1297.          tst.w   d4            signed byte
  1298.          bne.s   trybyte
  1299.          bsr     sbyte
  1300. endad1   bra     endad2
  1301.  
  1302. trybyte  move.b  #'$',(a1)+
  1303.          cmpi.w  #1,d4
  1304.          bne.s   tryword       Byte absolute
  1305.          bsr     byte
  1306.          bra.s   endad1
  1307.  
  1308. tryword  cmpi.w  #2,d4
  1309.          bne.s   trysw         Word absolute
  1310.          tst.w   d6
  1311.          bne.s   noform
  1312.          bsr     format
  1313.          bra.s   endad1
  1314. noform   bsr     word
  1315.          bra.s   endad1
  1316.  
  1317. trysw    cmpi.w  #3,d4         signed word
  1318.          bne.s   trylw
  1319.          subq.l  #1,a1
  1320.          bsr     sword
  1321.          bra.s   endad1
  1322.  
  1323. trylw    cmpi.w  #4,d4
  1324.          bne.s   endad1
  1325.          bsr     long          Long word absolute
  1326.          bra.s   endad1
  1327.  
  1328. trydpc   cmpi.w  #10,d0
  1329.          bne.s   trypc         d(PC)
  1330.          cmpi.w  #4,d4
  1331.          beq.s   pclng
  1332.          move.w  a3,d1
  1333.          bsr     sword
  1334.          bra.s   pcsht
  1335. pclng    move.b  #'$',(a1)+
  1336.          bsr     long
  1337. pcsht    bsr     wrpc
  1338.          bra.s   endbra
  1339.  
  1340. trypc    cmpi.w  #11,d0
  1341.          bne.s   tryccr        d(PC,Rn)
  1342.          move.w  a3,d1
  1343.          bsr     sbyte
  1344.          bsr     wrpc
  1345. Xpc      move.b  #',',(a1)+
  1346.          move.w  a3,d1
  1347.          lsr.w   #8,d1
  1348.          lsr.w   #4,d1
  1349.          lea     RegText(pc),a0
  1350.          bsr     Dreg
  1351.          lea     pointw(pc),a0
  1352.          move.w  a3,d1
  1353.          andi.w  #$f00,d1
  1354.          beq.s   isword
  1355.          addq.l  #2,a0
  1356. isword   bsr     wrbuf
  1357. endbra   move.b  #')',(a1)+
  1358.          bra     endad2
  1359.  
  1360. tryccr   cmpi.w  #13,d0        to ccr
  1361.          bne.s   trysr
  1362.          lea     Tccr(pc),a0
  1363.          bra.s   wrbuf3
  1364.  
  1365. trysr    cmpi.w  #14,d0        to sr
  1366.          bne.s   tryusp
  1367.          lea     Tsr(pc),a0
  1368.          bsr     wrbuf
  1369.          bra.s   endad2
  1370.  
  1371. tryusp   cmpi.w  #18,d0        to sfc/dfc/usp/vbr
  1372.          bgt.s   smovem
  1373.          lea     Tsfc(pc),a0
  1374.          subi.w  #15,d0
  1375.          mulu    #3,d0
  1376.          ext.l   d0
  1377.          adda.l  d0,a0
  1378. wrbuf3   bsr     wr3
  1379.          bra.s   endad2
  1380.  
  1381. smovem   cmpi.w  #19,d0
  1382.          bne.s   endad2
  1383.          moveq   #0,d4
  1384.          move.w  d1,d5
  1385.          moveq   #0,d6        first loop flag
  1386. floop    btst    d4,d5        find first nonzero bit in d1
  1387.          bne.s   first
  1388.          addq.w  #1,d4
  1389.          cmpi.w  #16,d4
  1390.          bne.s   floop
  1391.          beq.s   endad2       no more nonzero bits
  1392. first    move.w  d4,d2        save first reg
  1393.          bra.s   mnext
  1394. lloop    btst    d4,d5
  1395.          beq.s   islast
  1396. mnext    addq.w  #1,d4
  1397.          cmpi.w  #16,d4
  1398.          bne.s   lloop
  1399. islast   tst.l   d6
  1400.          beq.s   ffst
  1401.          move.b  #'/',(a1)+
  1402. ffst     moveq   #1,d6
  1403.          lea     RegText(pc),a0
  1404.          move.w  d2,d1
  1405.          bsr.s   Dreg
  1406.          move.w  d4,d1
  1407.          subq.w  #1,d1
  1408.          cmp.w   d1,d2
  1409.          beq.s   lstlp
  1410.          move.b  #'-',(a1)+
  1411.          lea     RegText(pc),a0
  1412.          bsr.s   Dreg
  1413. lstlp    cmpi.w  #16,d4
  1414.          bne.s   floop
  1415.  
  1416.  
  1417. endad2   move.w  (a7)+,d0      next type
  1418.          beq.s   endaddr       no more
  1419.          move.b  #',',(a1)+
  1420.          cmpa.l  #0,a5
  1421.          beq.s   MAD
  1422.          movea.l a5,a3
  1423. MAD      bra     NAddress      Second address
  1424.  
  1425. endaddr  movem.l (a7)+,d0-d7/a3-a6
  1426.          rts
  1427.  
  1428. ; Write (An)
  1429.  
  1430. Aareg    move.b  #'(',(a1)+
  1431.          bsr.s   Areg
  1432.          move.b  #')',(a1)+
  1433.          rts
  1434.  
  1435. ; Write An
  1436.  
  1437. Areg     lea     RegA(pc),a0
  1438. Dreg     lsl.w   #1,d1
  1439.          add.w   d1,a0
  1440. wrbuf    move.b  (a0)+,(a1)+
  1441.          move.b  (a0)+,(a1)+
  1442.          rts
  1443.  
  1444. ; Write (PC
  1445.  
  1446. wrpc     lea    PCtext(pc),a0
  1447. wr3      move.b (a0)+,(a1)+
  1448.          bra.s  wrbuf
  1449.  
  1450.  
  1451. ; Conversion to hex
  1452. ; a1 buffer (incremented)
  1453. ; d0 lost
  1454. ; d1 binary to write (unchanged)
  1455. ; d2 lost
  1456.  
  1457. sword    tst.w   d1
  1458.          bpl.s   sw1
  1459.          neg.w   d1
  1460.          move.b  #'-',(a1)+
  1461. sw1      move.b  #'$',(a1)+
  1462.          bra.s   word
  1463.  
  1464. sbyte    tst.b   d1
  1465.          bpl.s   sb1
  1466.          neg.b   d1
  1467.          move.b  #'-',(a1)+
  1468. sb1      move.b  #'$',(a1)+
  1469.          bra.s   byte
  1470.  
  1471. ; Write long word
  1472.  
  1473. long     tst.l   d1
  1474.          beq.s   null
  1475.          cmpi.l  #9,d1
  1476.          bhi.s   llong
  1477.          subq.l  #1,a1
  1478. llong    move.l  d1,d0
  1479.          swap    d0
  1480.          lsr.w   #8,d0
  1481.          bsr.s   byte1          1st byte of long
  1482.  
  1483.  
  1484. ; Write address
  1485.  
  1486. address  move.l  d1,d0
  1487.          swap    d0
  1488.          bsr.s   byte1          1st byte of address
  1489.          bra.s   words
  1490.  
  1491. ; Write hex word
  1492.  
  1493. word     tst.w   d1
  1494.          beq.s   null
  1495.          cmpi.w  #9,d1
  1496.          bhi.s   words
  1497.          subq.l  #1,a1
  1498. words    move.w  d1,d0
  1499.          lsr.w   #8,d0
  1500.          bsr.s   byte1          1st byte of word
  1501.          bra.s   bight
  1502. byte     tst.b   d1
  1503.          beq.s   null
  1504.          cmpi.b  #9,d1
  1505.          bhi.s   bight
  1506.          subq.l  #1,a1
  1507. bight    move.w  d1,d0
  1508.  
  1509. ; Convert byte to ASCII and write into buffer
  1510.  
  1511. byte1    move.b  d0,d2          save byte
  1512.          lsr.b   #4,d0          high half byte
  1513.          bsr.s   byte2
  1514.          move.b  d2,d0          restore byte
  1515.  
  1516. ; Convert half byte to ASCII and write into buffer
  1517.  
  1518. byte2    andi.b  #$f,d0         take lower half byte
  1519.          bne.s   write
  1520.          tst.w   d5
  1521.          beq.s   nowrite
  1522. write    moveq   #1,d5
  1523.          addi.b  #'0',d0        convert to "0" - "9"
  1524.          cmpi.b  #$3a,d0        above "9"?
  1525.          blt.s   nocorr
  1526.          addq.b  #7,d0          convert to "A" - "F"
  1527. nocorr   move.b  d0,(a1)+       write into buffer
  1528. nowrite  rts
  1529.  
  1530. null     subq.l  #1,a1
  1531.          move.b  #'0',(a1)+
  1532.          rts
  1533.  
  1534. ; write word or ASCII
  1535.  
  1536. format   cmpi.b  #'''',d1
  1537.          beq.s   word
  1538.          cmpi.b  #' ',d1
  1539.          blt.s   word
  1540.          cmpi.b  #$7e,d1
  1541.          bgt.s   word
  1542.          move.w  d1,d0
  1543.          lsr.w   #8,d0
  1544.          cmpi.b  #'''',d0
  1545.          beq.s   word
  1546.          cmpi.b  #' ',d0
  1547.          blt.s   word
  1548.          cmpi.b  #$7e,d0
  1549.          bgt.s   word
  1550.          subq.l  #1,a1
  1551.          move.b  #'''',(a1)+
  1552.          move.b  d0,(a1)+
  1553.          move.b  d1,(a1)+
  1554.          move.b  #'''',(a1)+
  1555.          rts
  1556.  
  1557.  
  1558. ; Decode <ea>,Dn or Dn,<ea>
  1559.  
  1560. Xdneasize move.w  d3,d0
  1561.          andi.w  #$100,d0
  1562.          movea.w d0,a4
  1563.          bsr.s   Dneasize
  1564.          cmpa.w  #0,a4
  1565.          beq.s   noswap
  1566. Swapreg  exg     d2,d5
  1567.          exg     d3,d6
  1568.          exg     d4,d7
  1569. noswap   rts
  1570.  
  1571.  
  1572. ; Decode Dn,<ea>
  1573.  
  1574. Dneasize bsr.s  Size
  1575. Dnea     move.w d3,-(a7)
  1576.          bsr    DecAddr1
  1577.          move.w (a7)+,d4
  1578.          andi.w #$e00,d4
  1579.          lsr.w  #8,d4
  1580.          lsr.w  #1,d4
  1581.          moveq  #1,d2
  1582.          rts
  1583.  
  1584. ; Get size of operand
  1585.  
  1586. Size     move.w  d3,d0
  1587.          andi.w  #$c0,d0
  1588.          lsr.w   #5,d0
  1589.          cmpi.w  #6,d0
  1590.          beq     rubbish
  1591.          rts
  1592.  
  1593. ; Get vector address
  1594.  
  1595. Vector   moveq   #1,d0
  1596.          moveq   #0,d1
  1597.          moveq   #0,d2
  1598.          moveq   #12,d5
  1599.          moveq   #1,d6
  1600.          andi.w  #7,d3
  1601.          move.w  d3,d7
  1602.          rts
  1603.  
  1604. ; Decode address for bit operation
  1605.  
  1606. Bit      move.w  d3,d0
  1607.          andi.w  #$100,d0
  1608.          bne.s   Rdata
  1609.          move.w  d3,d0
  1610.          andi.w  #$e00,d0
  1611.          cmpi.w  #$800,d0
  1612.          bne.s   rubbish
  1613.          move.w  (a1)+,d7
  1614.          cmpi.w  #31,d7         data must be 0..31
  1615.          bhi.s   rubbish
  1616.          moveq   #1,d0          no qualifier
  1617.          moveq   #1,d1          two words
  1618.          moveq   #12,d5         immediate
  1619.          moveq   #1,d6          byte
  1620.          bra.s   EndBit
  1621.  
  1622. Rdata    moveq   #1,d0          no qualifier
  1623.          moveq   #0,d1          one word
  1624.          moveq   #1,d5          type Dn
  1625.          move.w  d3,d7
  1626.          lsr.w   #8,d7
  1627.          lsr.w   #1,d7
  1628. EndBit   bsr.s   DecAddr2
  1629.          cmpi.w  #2,d2
  1630.          beq.s   rubbish        no  ",An"
  1631.          cmpi.w  #9,d2
  1632.          bgt.s   rubbish
  1633.          rts
  1634.  
  1635. ; Decode address for immediate opcode
  1636.  
  1637. Imdt     move.l  d3,d6
  1638.          andi.w  #$c0,d6
  1639.          lsr.w   #5,d6           length of 1st operand
  1640.          move.l  d6,d0           qualifier
  1641.          moveq   #12,d5          type of 1st operand
  1642.          moveq   #1,d1           number of words - 1
  1643.          cmpi.w  #6,d0
  1644.          beq.s   rubbish
  1645.          cmpi.w  #4,d0
  1646.          beq.s   longop
  1647.          move.w  (a1)+,d7
  1648.          tst.w   d0
  1649.          bne.s   nolong
  1650.          moveq   #1,d6           byte operand
  1651.          cmpi.w  #$ff,d7         check if high byte = 0
  1652.          bgt.s   rubbish
  1653.          bra.s   nolong
  1654. longop   move.l  (a1)+,d7
  1655.          moveq   #2,d1
  1656. nolong   bsr.s   DecAddr2
  1657.          cmpi.w  #2,d2
  1658.          beq.s   rubbish         no  ",An"
  1659.          rts
  1660.  
  1661. ; DecAddr1 decode second address and make it first
  1662.  
  1663. DecAddr1 tst.l   d0
  1664.          bmi.s   rubbish
  1665.          moveq   #0,d1
  1666.          bsr.s   DecAddr2
  1667.          move.w  d2,d5
  1668.          move.w  d3,d6
  1669.          move.l  d4,d7
  1670.          moveq   #0,d2
  1671.          rts
  1672.  
  1673. ; DecAddr2 decode |effective address| as second address
  1674. ;                 |  mode  |register|
  1675. ; mode                       reg if mode = 7
  1676. ; 0 = Dn                     000 = $xxxx
  1677. ; 1 = An                     001 = $xxxx xxxx
  1678. ; 2 = (An)                   010 = d(PC)
  1679. ; 3 = (An)+                  011 = d(PC,Rn)
  1680. ; 4 = -(An)                  100 = #$xxxx
  1681. ; 5 = d(An)                  101 - 111 reserved
  1682. ; 6 = d(An,Rn)
  1683.  
  1684. rubbish  moveq   #-1,d0
  1685.          rts
  1686. DecAddr2 move.w  d3,d2           type of second operand
  1687.          andi.w  #$38,d2
  1688.          lsr.w   #3,d2
  1689.          addq.w  #1,d2           mode
  1690.          move.w  d3,d4           address of second operand
  1691.          andi.w  #7,d4           register number
  1692.          cmpi.w  #8,d2
  1693.          beq.s   second
  1694.          cmpi.w  #6,d2
  1695.          blt.s   nodisp
  1696.          bne.s   fix7
  1697. getsec   addq.l  #1,d1           increment no of words
  1698.          move.w  (a1)+,a3        displacement
  1699. nodisp   rts
  1700. fix7     bsr.s   getsec          for d(An,Rn)
  1701.          tst.l   d0
  1702.          beq.s   is.b
  1703.          move.w  a3,d2           if the qualifier is not .b the
  1704.          andi.w  #1,d2           displacement must be even
  1705.          bne.s   rubbish
  1706. is.b     move.w  a3,d2           d must be X0YZ
  1707.          andi.w  #$f00,d2               or X8YZ
  1708.          cmpi.w  #$800,d2
  1709.          beq.s   fixed
  1710.          tst.w   d2
  1711.          bne.s   rubbish
  1712. fixed    moveq   #7,d2
  1713.          rts
  1714. second   moveq   #2,d3           assume length of word
  1715.          move.w  d4,d2
  1716.          addq.w  #8,d2           get address type
  1717.          cmpi.w  #10,d2
  1718.          beq.s   getsec          d(PC)
  1719.          cmpi.w  #11,d2
  1720.          beq.s   getsec          d(PC,Rn)
  1721.          cmpi.w  #9,d2
  1722.          bne.s   secwrd
  1723. secl     addq.w  #2,d1
  1724.          moveq   #4,d3
  1725.          move.l  (a1)+,d4        $xxxx xxxx/ #$xxxx xxxx
  1726.          rts
  1727. secwrd   cmpi.w  #12,d2
  1728.          bgt.s   trash    reserved
  1729.          bne.s   sec2     the #... address is determined
  1730.          cmpi.w  #4,d0    by the qualifier of the command
  1731.          beq.s   secl
  1732.          tst.w   d0
  1733.          bne.s   sec2
  1734.          move.w  (a1),d4       test if really is byte
  1735. *>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*
  1736. * As far as I can tell this test is formally not correct,  *
  1737. * ie. eg. $000041EE is interpreted exactly the same as     *
  1738. * $000000EE namely    ori.b #-$12,d0    by the processor.  *
  1739. * I know of no assembler or complier which produces        *
  1740. * anything else for the redundant byte XX in $0000XXEE     *
  1741. * other than 00 or FF. For this reason I believe this test *
  1742. * helps to discriminate code from data.                    *
  1743. *>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*
  1744.          andi.w  #$ff00,d4
  1745.          beq.s   byteok
  1746.          cmpi.w  #$ff00,d4
  1747.          bne.s   trash
  1748. byteok   moveq   #1,d3
  1749. sec2     addq    #1,d1          $xxxx / #$xxxx / #$xx
  1750.          move.w  (a1)+,d4
  1751.          rts
  1752.  
  1753. **** CHECK IF ADDRESS VALID *****
  1754.  
  1755. ; d2 <> 2, 12
  1756.  
  1757. Check1   cmpi.w  #2,d2
  1758.          beq.s   trash
  1759.          cmpi.w  #12,d2
  1760. ccc      bne.s   ok
  1761. trash    moveq   #-1,d0
  1762. ok       rts
  1763.  
  1764. ; d5 <> 1, 2, 4, 5, 12
  1765.  
  1766. Check2   cmpi.w  #1,d5
  1767.          beq.s   trash
  1768.          cmpi.w  #2,d5
  1769.          beq.s   trash
  1770.          cmpi.w  #4,d5
  1771.          beq.s   trash
  1772.          cmpi.w  #5,d5
  1773.          beq.s   trash
  1774.          cmpi.w  #12,d5
  1775.          bra.s   ccc
  1776.  
  1777. Group    dc.l Group0,Group1,Group2,Group3,Group4,Group5,Group6
  1778.          dc.l Group7,Group8,Group9,Undef,Groupb,Groupc,Groupd
  1779.          dc.l Groupe,Undef
  1780.  
  1781. ******* OP CODE TEXTS *******
  1782.  
  1783. nodef    dc.b 'dc',0
  1784. TAbcd    dc.b 'abcd',0
  1785. TAdd     dc.b 'add',0
  1786. TAdda    dc.b 'adda',0
  1787. TAddi    dc.b 'addi',0
  1788. TAddq    dc.b 'addq',0
  1789. TAddx    dc.b 'addx',0
  1790. TAnd     dc.b 'and',0
  1791. TAndi    dc.b 'andi',0
  1792. TBchg    dc.b 'bchg',0
  1793. TBclr    dc.b 'b'
  1794. TClr     dc.b 'clr',0
  1795. TBfchg   dc.b 'bfchg',0
  1796. TBfclr   dc.b 'bfclr',0
  1797. TBfexts  dc.b 'bfexts',0
  1798. TBfextu  dc.b 'bfextu',0
  1799. TBfffo   dc.b 'bfffo',0
  1800. TBfins   dc.b 'bfins',0
  1801. TBfset   dc.b 'bfset',0
  1802. TBftst   dc.b 'bfset',0
  1803. TBkpt    dc.b 'bkpt',0
  1804. TBset    dc.b 'bset',0
  1805. TBtst    dc.b 'b'
  1806. TTst     dc.b 'tst',0
  1807. TCallm   dc.b 'callm',0
  1808. TCas     dc.b 'cas',0
  1809. TCas2    dc.b 'cas2',0
  1810. TChk     dc.b 'chk',0
  1811. TChk2    dc.b 'chk2',0
  1812. TCmp     dc.b 'cmp',0
  1813. TCmpa    dc.b 'cmpa',0
  1814. TCmpi    dc.b 'cmpi',0
  1815. TCmpm    dc.b 'cmpm',0
  1816. TCmp2    dc.b 'cmp2',0
  1817. TDivs    dc.b 'divs',0
  1818. TDivsl   dc.b 'divsl',0
  1819. TDivu    dc.b 'divu',0
  1820. TDivul   dc.b 'divul',0
  1821. TEor     dc.b 'e'
  1822. Tor      dc.b 'or',0
  1823. TEori    dc.b 'e'
  1824. TOri     dc.b 'ori',0
  1825. TExg     dc.b 'exg',0
  1826. TExtn    dc.b 'ext',0
  1827. TExtb    dc.b 'extb',0
  1828. TIllegal dc.b 'illegal',0
  1829. TJmp     dc.b 'jmp',0
  1830. TJsr     dc.b 'jsr',0
  1831. TLea     dc.b 'lea',0
  1832. TLink    dc.b 'link',0
  1833. TMove    dc.b 'move',0
  1834. TMovea   dc.b 'movea',0
  1835. TMovec   dc.b 'movec',0
  1836. TMovem   dc.b 'movem',0
  1837. TMovep   dc.b 'movep',0
  1838. TMoveq   dc.b 'moveq',0
  1839. TMoves   dc.b 'moves',0
  1840. TMuls    dc.b 'muls',0
  1841. TMulu    dc.b 'mulu',0
  1842. TNbcd    dc.b 'nbcd',0
  1843. TNeg     dc.b 'neg',0
  1844. TNegx    dc.b 'negx',0
  1845. TNop     dc.b 'nop',0
  1846. TNot     dc.b 'not',0
  1847. TPack    dc.b 'pack',0
  1848. TPea     dc.b 'pea',0
  1849. TReset   dc.b 'reset',0
  1850. TRtd     dc.b 'rtd',0
  1851. TRte     dc.b 'rte',0
  1852. TRtm     dc.b 'rtm',0
  1853. TRtr     dc.b 'rtr',0
  1854. TRts     dc.b 'rts',0
  1855. TSbcd    dc.b 'sbcd',0
  1856. TStop    dc.b 'stop',0
  1857. TSub     dc.b 'sub',0
  1858. TSuba    dc.b 'suba',0
  1859. TSubi    dc.b 'subi',0
  1860. TSubq    dc.b 'subq',0
  1861. TSubx    dc.b 'subx',0
  1862. TSwap    dc.b 'swap',0
  1863. TTas     dc.b 'tas',0
  1864. TTrap    dc.b 'trap',0
  1865. TTrapv   dc.b 'trapv',0
  1866. TUnlk    dc.b 'unlk',0
  1867. TUnpk    dc.b 'unpk',0
  1868.  
  1869. *** BRANCH OPERANDS ***
  1870.  
  1871.          dc.b 'dbt ',0
  1872. Branch   dc.b 'dbra',0
  1873.          dc.b ' bsr',0
  1874.          dc.b 'dbhi',0
  1875.          dc.b 'dbls',0
  1876.          dc.b 'dbcc',0
  1877.          dc.b 'dbcs',0
  1878.          dc.b 'dbne',0
  1879.          dc.b 'dbeq',0
  1880.          dc.b 'dbvc',0
  1881.          dc.b 'dbvs',0
  1882.          dc.b 'dbpl',0
  1883.          dc.b 'dbmi',0
  1884.          dc.b 'dbge',0
  1885.          dc.b 'dblt',0
  1886.          dc.b 'dbgt',0
  1887.          dc.b 'dble',0
  1888. Setcc    dc.b 'st ',0
  1889.          dc.b 'sf ',0
  1890.          dc.b 'shi',0
  1891.          dc.b 'sls',0
  1892.          dc.b 'scc',0
  1893.          dc.b 'scs',0
  1894.          dc.b 'sne',0
  1895.          dc.b 'seq',0
  1896.          dc.b 'svc',0
  1897.          dc.b 'svs',0
  1898.          dc.b 'spl',0
  1899.          dc.b 'smi',0
  1900.          dc.b 'sge',0
  1901.          dc.b 'slt',0
  1902.          dc.b 'sgt',0
  1903.          dc.b 'sle',0
  1904.  
  1905. *** LOGICAL OPERANDS ***
  1906.  
  1907. TAsr     dc.b ' asr',0
  1908.          dc.b ' asl',0
  1909.          dc.b ' lsr',0
  1910.          dc.b ' lsl',0
  1911.          dc.b 'rorx',0
  1912.          dc.b 'rolx',0
  1913.          dc.b ' ror',0
  1914.          dc.b ' rol',0
  1915.  
  1916. ******* QUALIFIERS ******
  1917.  
  1918. pointb   dc.b '.b'
  1919. pointw   dc.b '.w'
  1920.          dc.b '.l'
  1921.          dc.b '.s'
  1922.  
  1923. *** REGISTER TEXTS ***
  1924.  
  1925. RegText  dc.b 'd0d1d2d3d4d5d6d7'
  1926. RegA     dc.b 'a0a1a2a3a4a5a6a7'
  1927. Tccr     dc.b 'ccr'
  1928. Tsr      dc.b 'sr'
  1929. PCtext   dc.b '(pc'
  1930. Tsfc     dc.b 'sfc'
  1931.          dc.b 'dfc'
  1932.          dc.b 'usp'
  1933.          dc.b 'vbr'
  1934.          end
  1935.